From: Jeroen van der Heijden Date: Tue, 21 Jan 2020 19:43:28 +0000 (+0100) Subject: Work on shard X-Git-Tag: archive/raspbian/2.0.44-1+rpi1~1^2~3^2~5^2~23 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=e78231aaceb13be8390888678c097461af74c8c5;p=siridb-server.git Work on shard --- diff --git a/grammar/export_grammar.py b/grammar/export_grammar.py index f0b1bf84..c844ddcd 100755 --- a/grammar/export_grammar.py +++ b/grammar/export_grammar.py @@ -1,4 +1,4 @@ -#!/usr/bin/python3 +#!/usr/bin/env python '''Export python grammar to C grammar files Author: Jeroen van der Heijden (Transceptor Technology) diff --git a/include/siri/db/db.h b/include/siri/db/db.h index 2c045784..961338d1 100644 --- a/include/siri/db/db.h +++ b/include/siri/db/db.h @@ -73,8 +73,8 @@ struct siridb_s struct timespec start_time; /* to calculate up-time. */ uint64_t duration_num; /* number duration in s, ms, us or ns */ uint64_t duration_log; /* log duration in s, ms, us or ns */ - uint64_t expire_at_num; /* UNIX time stamp in s, ms, us or ns */ - uint64_t expire_at_log; /* UNIX time stamp in s, ms, us or ns */ + uint64_t exp_at_num; /* UNIX time stamp in s, ms, us or ns */ + uint64_t exp_at_log; /* UNIX time stamp in s, ms, us or ns */ uint64_t expiration_num; /* number duration in s, ms, us or ns */ uint64_t expiration_log; /* log duration in s, ms, us or ns */ char * dbname; diff --git a/include/siri/grammar/grammar.h b/include/siri/grammar/grammar.h index 3f41f461..83ea352a 100644 --- a/include/siri/grammar/grammar.h +++ b/include/siri/grammar/grammar.h @@ -5,7 +5,7 @@ * should be used with the libcleri module. * * Source class: SiriGrammar - * Created at: 2019-03-06 11:59:02 + * Created at: 2020-01-21 16:05:35 */ #ifndef CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_ #define CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_ @@ -145,6 +145,8 @@ enum cleri_grammar_ids { CLERI_GID_K_DURATION_NUM, CLERI_GID_K_END, CLERI_GID_K_ERROR, + CLERI_GID_K_EXPIRATION_LOG, + CLERI_GID_K_EXPIRATION_NUM, CLERI_GID_K_EXPRESSION, CLERI_GID_K_FALSE, CLERI_GID_K_FIFO_FILES, @@ -282,6 +284,8 @@ enum cleri_grammar_ids { CLERI_GID_SET_ADDRESS, CLERI_GID_SET_BACKUP_MODE, CLERI_GID_SET_DROP_THRESHOLD, + CLERI_GID_SET_EXPIRATION_LOG, + CLERI_GID_SET_EXPIRATION_NUM, CLERI_GID_SET_EXPRESSION, CLERI_GID_SET_IGNORE_THRESHOLD, CLERI_GID_SET_LIST_LIMIT, diff --git a/src/siri/db/shards.c b/src/siri/db/shards.c index 83b5111f..a2c1f4bd 100644 --- a/src/siri/db/shards.c +++ b/src/siri/db/shards.c @@ -127,7 +127,7 @@ int siridb_shards_add_points( _Bool is_num = siridb_series_isnum(series); siridb_shard_t * shard; uint64_t duration = is_num ? siridb->duration_num : siridb->duration_log; - uint64_t expire = is_num ? siridb->expire_num : siridb->expire_log; + uint64_t expire_at = is_num ? siridb->exp_at_num : siridb->exp_at_log; uint64_t shard_start, shard_end, shard_id; uint_fast32_t start, end, num_chunks, pstart, pend; uint16_t chunk_sz; @@ -144,7 +144,7 @@ int siridb_shards_add_points( end < points->len && points->data[end].ts < shard_end; end++); - if (shard_end < expire) + if (shard_end < expire_at) continue; if ((shard = imap_get(siridb->shards, shard_id)) == NULL) diff --git a/src/siri/grammar/grammar.c b/src/siri/grammar/grammar.c index 6ed2519f..12d90266 100644 --- a/src/siri/grammar/grammar.c +++ b/src/siri/grammar/grammar.c @@ -5,7 +5,7 @@ * should be used with the libcleri module. * * Source class: SiriGrammar - * Created at: 2019-03-06 11:59:02 + * Created at: 2020-01-21 16:05:35 */ #include "siri/grammar/grammar.h" @@ -104,14 +104,14 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_t * k_max_open_files = cleri_keyword(CLERI_GID_K_MAX_OPEN_FILES, "max_open_files", CLERI_CASE_SENSITIVE); cleri_t * k_mean = cleri_keyword(CLERI_GID_K_MEAN, "mean", CLERI_CASE_SENSITIVE); cleri_t * k_median = cleri_keyword(CLERI_GID_K_MEDIAN, "median", CLERI_CASE_SENSITIVE); - cleri_t * k_median_low = cleri_keyword(CLERI_GID_K_MEDIAN_LOW, "median_low", CLERI_CASE_SENSITIVE); cleri_t * k_median_high = cleri_keyword(CLERI_GID_K_MEDIAN_HIGH, "median_high", CLERI_CASE_SENSITIVE); + cleri_t * k_median_low = cleri_keyword(CLERI_GID_K_MEDIAN_LOW, "median_low", CLERI_CASE_SENSITIVE); cleri_t * k_mem_usage = cleri_keyword(CLERI_GID_K_MEM_USAGE, "mem_usage", CLERI_CASE_SENSITIVE); cleri_t * k_merge = cleri_keyword(CLERI_GID_K_MERGE, "merge", CLERI_CASE_SENSITIVE); cleri_t * k_min = cleri_keyword(CLERI_GID_K_MIN, "min", CLERI_CASE_SENSITIVE); cleri_t * k_modify = cleri_keyword(CLERI_GID_K_MODIFY, "modify", CLERI_CASE_SENSITIVE); - cleri_t * k_nan = cleri_keyword(CLERI_GID_K_NAN, "nan", CLERI_CASE_SENSITIVE); cleri_t * k_name = cleri_keyword(CLERI_GID_K_NAME, "name", CLERI_CASE_SENSITIVE); + cleri_t * k_nan = cleri_keyword(CLERI_GID_K_NAN, "nan", CLERI_CASE_SENSITIVE); cleri_t * k_ninf = cleri_sequence( CLERI_GID_K_NINF, 2, @@ -141,9 +141,11 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_t * k_server = cleri_keyword(CLERI_GID_K_SERVER, "server", CLERI_CASE_SENSITIVE); cleri_t * k_servers = cleri_keyword(CLERI_GID_K_SERVERS, "servers", CLERI_CASE_SENSITIVE); cleri_t * k_set = cleri_keyword(CLERI_GID_K_SET, "set", CLERI_CASE_SENSITIVE); - cleri_t * k_sid = cleri_keyword(CLERI_GID_K_SID, "sid", CLERI_CASE_SENSITIVE); + cleri_t * k_expiration_log = cleri_keyword(CLERI_GID_K_EXPIRATION_LOG, "expiration_log", CLERI_CASE_SENSITIVE); + cleri_t * k_expiration_num = cleri_keyword(CLERI_GID_K_EXPIRATION_NUM, "expiration_num", CLERI_CASE_SENSITIVE); cleri_t * k_shards = cleri_keyword(CLERI_GID_K_SHARDS, "shards", CLERI_CASE_SENSITIVE); cleri_t * k_show = cleri_keyword(CLERI_GID_K_SHOW, "show", CLERI_CASE_SENSITIVE); + cleri_t * k_sid = cleri_keyword(CLERI_GID_K_SID, "sid", CLERI_CASE_SENSITIVE); cleri_t * k_size = cleri_keyword(CLERI_GID_K_SIZE, "size", CLERI_CASE_SENSITIVE); cleri_t * k_start = cleri_keyword(CLERI_GID_K_START, "start", CLERI_CASE_SENSITIVE); cleri_t * k_startup_time = cleri_keyword(CLERI_GID_K_STARTUP_TIME, "startup_time", CLERI_CASE_SENSITIVE); @@ -1165,6 +1167,33 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) k_timezone, string ); + cleri_t * set_expiration_num = cleri_sequence( + CLERI_GID_SET_EXPIRATION_NUM, + 4, + k_set, + k_expiration_num, + cleri_choice( + CLERI_NONE, + CLERI_FIRST_MATCH, + 2, + k_false, + time_expr + ), + cleri_optional(CLERI_NONE, set_ignore_threshold) + ); + cleri_t * set_expiration_log = cleri_sequence( + CLERI_GID_SET_EXPIRATION_LOG, + 3, + k_set, + k_expiration_log, + cleri_choice( + CLERI_NONE, + CLERI_FIRST_MATCH, + 2, + k_false, + time_expr + ) + ); cleri_t * alter_database = cleri_sequence( CLERI_GID_ALTER_DATABASE, 2, @@ -1172,11 +1201,13 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_choice( CLERI_NONE, CLERI_FIRST_MATCH, - 4, + 6, set_drop_threshold, set_list_limit, set_select_points_limit, - set_timezone + set_timezone, + set_expiration_num, + set_expiration_log ) ); cleri_t * alter_group = cleri_sequence( diff --git a/src/siri/heartbeat.c b/src/siri/heartbeat.c index b1ec11a1..c8e58cb4 100644 --- a/src/siri/heartbeat.c +++ b/src/siri/heartbeat.c @@ -64,11 +64,11 @@ static void HEARTBEAT_cb(uv_timer_t * handle __attribute__((unused))) { siridb = (siridb_t *) siridb_node->data; - siridb->expire_at_num = siridb->expiration_num + siridb->exp_at_num = siridb->expiration_num ? siridb_time_now(siridb, now) - siridb->expiration_num : 0; - siridb->expire_at_log = siridb->expiration_log + siridb->exp_at_log = siridb->expiration_log ? siridb_time_now(siridb, now) - siridb->expiration_log : 0;